package com.redepronik.negosys.rrhh.entity;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import com.redepronik.negosys.invfac.entity.Bodegaempleadocargo;
import com.redepronik.negosys.invfac.entity.Egreso;
import com.redepronik.negosys.invfac.entity.Guiaremision;
import com.redepronik.negosys.invfac.entity.Ingreso;
import com.redepronik.negosys.invfac.entity.Localempleadocargo;

/**
 * The persistent class for the empleadocargo database table.
 * 
 */
@Entity
@Table(schema = "rrhh", name = "empleadocargo")
@NamedQuery(name = "Empleadocargo.findAll", query = "SELECT e FROM Empleadocargo e")
public class Empleadocargo implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	@SequenceGenerator(allocationSize = 1, name = "EMPLEADOCARGO_EMPLEADOCARGOID_GENERATOR", sequenceName = "RRHH.EMPLEADOCARGO_EMPLEADOCARGOID_SEQ")
	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "EMPLEADOCARGO_EMPLEADOCARGOID_GENERATOR")
	@Column(unique = true, nullable = false)
	private Integer empleadocargoid;

	@Column(nullable = false)
	private Boolean actual;

	@Temporal(TemporalType.DATE)
	private Date fechacierre;

	@Temporal(TemporalType.DATE)
	@Column(nullable = false)
	private Date fechainicio;

	// bi-directional many-to-one association to Cargo
	@ManyToOne
	@JoinColumn(name = "cargoid", nullable = false)
	private Cargo cargo;

	// bi-directional many-to-one association to Empleado
	@ManyToOne
	@JoinColumn(name = "empleadoid", nullable = false)
	private Empleado empleado;

	// bi-directional many-to-one association to Bodegaempleadocargo
	@OneToMany(orphanRemoval = true, cascade = CascadeType.ALL, mappedBy = "empleadocargo")
	private List<Bodegaempleadocargo> bodegaempleadocargos;

	// bi-directional many-to-one association to Bodegaempleadocargo
	@OneToMany(orphanRemoval = true, cascade = CascadeType.ALL, mappedBy = "empleadocargo")
	private List<Localempleadocargo> localempleadocargos;

	// bi-directional many-to-one association to Bodegaempleadocargo
	@OneToMany(orphanRemoval = true, cascade = CascadeType.ALL, mappedBy = "transportistaid")
	private List<Guiaremision> guiaremisiones;

	// bi-directional many-to-one association to Bodegaempleadocargo
	@OneToMany(orphanRemoval = true, cascade = CascadeType.ALL, mappedBy = "cajeroid")
	private List<Egreso> egresos;

	// bi-directional many-to-one association to Bodegaempleadocargo
	@OneToMany(orphanRemoval = true, cascade = CascadeType.ALL, mappedBy = "bodegueroid")
	private List<Ingreso> ingresos;

	public Empleadocargo() {
	}

	public Bodegaempleadocargo addBodegaempleadocargo(
			Bodegaempleadocargo bodegaempleadocargo) {
		getBodegaempleadocargos().add(bodegaempleadocargo);
		bodegaempleadocargo.setEmpleadocargo(this);

		return bodegaempleadocargo;
	}

	public Egreso addEgreso(Egreso egreso) {
		getEgresos().add(egreso);
		egreso.setCajeroid(this);

		return egreso;
	}

	public Guiaremision addGuiaremision(Guiaremision guiaremision) {
		getGuiaremisiones().add(guiaremision);
		guiaremision.setTransportistaid(this);

		return guiaremision;
	}

	public Ingreso addIngreso(Ingreso ingreso) {
		getIngresos().add(ingreso);
		ingreso.setBodegueroid(this);

		return ingreso;
	}

	public Localempleadocargo addLocalempleadocargo(
			Localempleadocargo localempleadocargo) {
		getLocalempleadocargos().add(localempleadocargo);
		localempleadocargo.setEmpleadocargo(this);

		return localempleadocargo;
	}

	public Boolean getActual() {
		return this.actual;
	}

	public List<Bodegaempleadocargo> getBodegaempleadocargos() {
		return bodegaempleadocargos;
	}

	public Cargo getCargo() {
		return this.cargo;
	}

	public List<Egreso> getEgresos() {
		return egresos;
	}

	public Empleado getEmpleado() {
		return this.empleado;
	}

	public Integer getEmpleadocargoid() {
		return this.empleadocargoid;
	}

	public Date getFechacierre() {
		return this.fechacierre;
	}

	public Date getFechainicio() {
		return this.fechainicio;
	}

	public List<Guiaremision> getGuiaremisiones() {
		return guiaremisiones;
	}

	public List<Ingreso> getIngresos() {
		return ingresos;
	}

	public List<Localempleadocargo> getLocalempleadocargos() {
		return localempleadocargos;
	}

	public Bodegaempleadocargo removeBodegaempleadocargo(
			Bodegaempleadocargo bodegaempleadocargo) {
		getBodegaempleadocargos().remove(bodegaempleadocargo);
		bodegaempleadocargo.setEmpleadocargo(null);

		return bodegaempleadocargo;
	}

	public Egreso removeEgreso(Egreso egreso) {
		getEgresos().remove(egreso);
		egreso.setCajeroid(null);

		return egreso;
	}

	public Guiaremision removeGuiaremision(Guiaremision guiaremision) {
		getGuiaremisiones().remove(guiaremision);
		guiaremision.setTransportistaid(null);

		return guiaremision;
	}

	public Ingreso removeIngreso(Ingreso ingreso) {
		getIngresos().remove(ingreso);
		ingreso.setBodegueroid(null);

		return ingreso;
	}

	public Localempleadocargo removeLocalempleadocargo(
			Localempleadocargo localempleadocargo) {
		getLocalempleadocargos().remove(localempleadocargo);
		localempleadocargo.setEmpleadocargo(null);

		return localempleadocargo;
	}

	public void setActual(Boolean actual) {
		this.actual = actual;
	}

	public void setBodegaempleadocargos(
			List<Bodegaempleadocargo> bodegaempleadocargos) {
		this.bodegaempleadocargos = bodegaempleadocargos;
	}

	public void setCargo(Cargo cargo) {
		this.cargo = cargo;
	}

	public void setEgresos(List<Egreso> egresos) {
		this.egresos = egresos;
	}

	public void setEmpleado(Empleado empleado) {
		this.empleado = empleado;
	}

	public void setEmpleadocargoid(Integer empleadocargoid) {
		this.empleadocargoid = empleadocargoid;
	}

	public void setFechacierre(Date fechacierre) {
		this.fechacierre = fechacierre;
	}

	public void setFechainicio(Date fechainicio) {
		this.fechainicio = fechainicio;
	}

	public void setGuiaremisiones(List<Guiaremision> guiaremisiones) {
		this.guiaremisiones = guiaremisiones;
	}

	public void setIngresos(List<Ingreso> ingresos) {
		this.ingresos = ingresos;
	}

	public void setLocalempleadocargos(
			List<Localempleadocargo> localempleadocargos) {
		this.localempleadocargos = localempleadocargos;
	}

}